package com.example.grpc.user;

import com.example.grpc.dto.UserDto;
import com.example.grpc.userpage.UserList;
import io.grpc.stub.StreamObserver;
import org.lognet.springboot.grpc.GRpcService;

import java.util.ArrayList;

@GRpcService
public class UserOperateImpl extends UsersGrpc.UsersImplBase {

    @Override
    public void list(UserRequest request, StreamObserver<UserResponse> responseObserver) {
        //根据名称获取参数
        String type = request.getType();
        //创建一个几个准备测试数据
        ArrayList<UserDto> users = new ArrayList<>();
        users.add(new UserDto(1, "zhangsan", "aaa@163.com"));
        users.add(new UserDto(2, "lisi", "bbb@163.com"));
        users.add(new UserDto(3, "wangwu", "ccc@163.com"));
        //使用UserList的构建器创建一个新的 UserList.Builder对象
        UserArr.Builder userArr = UserArr.newBuilder();
        //list.forEach(c ->{...}); 遍历 list 列表，对每个元素执行 lambda 表达式中的代码块。
        users.forEach(
            c -> {
                //创建一个新的 StoreSystemBean.Builder 对象，并设置其属性值，然后将其添加到 resList 中。
                User.Builder bean = User.newBuilder()
                    .setId(c.getId())
                    .setName(c.getName())
                    .setEmail(c.getEmail());
                userArr.addUsers(bean);
            }
        );
        //使用 StoreResponse 的构建器创建一个新的响应对象，并将其设置为包含 resList 的结果
        UserResponse response = UserResponse.newBuilder().setResult(userArr).build();
        //将响应对象返回给客户端。
        responseObserver.onNext(response);
        //通知客户端，该调用已完成。
        responseObserver.onCompleted();

    }

}